﻿/////////////////////////////////////////////////////////////////////////
//                                                                     //
//    MTGProject - A Magic The Gathering Networked Environment         //
//                                                                     //
//        Copyright (c) 2008 by The MTGProject Team (CSC230)           //
//                                                                     //
// This file is part of MTGProject.                                    //
//                                                                     //
// MTGProject is free software; you can redistribute it and/or         //
// modify it under the terms of the GNU Lesser General Public          //
// License as published by the Free Software Foundation; either        //
// version 3 of the License, or (at your option) any later version.    //
//                                                                     //
// This library is distributed in the hope that it will be useful,     //
// but WITHOUT ANY WARRANTY; without even the implied warranty of      //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       //
// GNU Lesser General Public License for more details.                 //
//                                                                     //
// You should have received a copy of the GNU Lesser General Public    //
// License along with this library; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA           //
// 02111-1307, USA, or contact the author(s):                          //
//                                                                     //
// Ruben Acuna <flyingfowlsoftware@earthlink.net>                      //
//                                                                     //
/////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Text;

namespace MTGProject
{
	public enum ManaColor
	{
		BLACK,
		BLUE,
		GREEN,
        MULTI,
		NONE,
		RED,
		WHITE
	}

    public enum EnchantmentType
    {
        AURA_CREATURE,
        AURA_LAND,
        GLOBAL
    }

    public enum CreatureType
    {
        ANGEL,
        AVATAR,
        BEAR,
        BEAST,
        BERSERKER,
        BIRD,
        CAT,
        CLERIC,
        CROCODILE,
        DRAKE,
        DRUID,
        DRYAD,
        ELEMENTAL,
        ELF,
        GIANT,
        GOBLIN,
        GRIFFIN,
        HORROR,
        HUMAN,
        IMP,
        INSECT,
        KAVU,
        KNIGHT,
        LEGENDARY,
        MERFOLK,
        MINOTAUR,
        MONK,
        MUTANT,
        OGRE,
        RAT,
        REBEL,
        RHINO,
        ROGUE,
        SCOUT,
        SERPENT,
        SHAMAN,
        SAPROLING,
        SOLDIER,
        SPECTER,
        SPIDER,
        WALL,
        WARRIOR,
        WIZARD,
        WOLF,
        WURM,
        ZOMBIE
    }

	public enum CreatureKeyword
    {
		FEAR,
        FIRST_STRIKE,
        DOUBLE_STRIKE,
		FLYING,
        HASTE,
		PLAINS_WALK,
		ISLAND_WALK,
		SWAMP_WALK,
		MOUNTAIN_WALK,
		FOREST_WALK,
		REACH,
		VIGILANCE,
        EXALTED,
        DEATHTOUCH,
        DEFENDER,
        TRAMPLE,
        LIFELINK,
        PROTECTION_WHITE,
        PROTECTION_BLUE,
        PROTECTION_BLACK,
        PROTECTION_RED,
        PROTECTION_GREEN
    }

    public enum Zone
    {
        DECK,
        GRAVEYARD,
        HAND,
        PERMANENTS,
        REMOVED,
        OTHER
    }

    public enum PartOfTurn
    {
        PHASE_BEGINNING,
        PHASE_COMBAT,
        PHASE_END,
        PHASE_MAINFIRST,
        PHASE_MAINSECOND,
        PHASE_DEFENSE,
        INVALID
    }

    public class Settings
    {
        public const int CARD_COLOR_COUNT = 7;
        public const int CARD_TYPE_COUNT = 47;
        public const int ENCHANTMENT_TYPE_COUNT = 2;
        public const int CARD_CREATURE_KEYWORDS = 22;
        public const int RULE_MINIMUM_DECK_SIZE = 40;
        public const int RULE_MAXIMUM_CARD_COPIES = 4;
    }

    public class Scripts
    {
        public const string LOCATION = "scripts\\";
    }

    public class ServerPackets
    {
        public const string CONNECTION_SUCCESSFUL   = "CONNECTION_SUCCESSFUL";
        public const string ERROR_CARD_INVALID      = "ERROR_CARD_INVALID";
        public const string ERROR_CRASHANDBURN      = "ERROR_CRASHANDBURN";
        public const string ERROR_MESSAGE           = "ERROR_MESSAGE";
        public const string EVENT_PHASE_MAIN_START  = "EVENT_PHASE_MAIN_START";
        public const string EVENT_PHASE_MAIN_END    = "EVENT_PHASE_MAIN_END";
        public const string EVENT_TURN_START        = "EVENT_TURN_START";
        public const string EVENT_TURN_END          = "EVENT_TURN_END";
        //public const string REQUEST_SETUP_CARDNAME  = "REQUEST_SETUP_CARDNAME";
        public const string REQUEST_SETUP_DECKCOUNT = "REQUEST_SETUP_DECKCOUNT";
        public const string SEND_COMMAND_DISCONNECT = "SEND_COMMAND_DISCONNECT";
        public const string SEND_MESSAGE            = "SEND_MESSAGE";
        public const string SEND_SYNC_CARDPOOL_SIZE     = "SEND_SYNC_CARDPOOL_SIZE";
        public const string SEND_PLAYER_HEALTH          = "SEND_PLAYER_HEALTH";
        public const string SEND_PLAYER_HAND_RESET      = "SEND_PLAYER_HAND_RESET";
        public const string SEND_PLAYER_HAND_CARD       = "SEND_PLAYER_HAND_CARD";
        public const string SEND_PLAYER_PERMANENTS_RESET= "SEND_PLAYER_PERMANENTS_RESET";
        public const string SEND_PLAYER_PERMANENTS_CARD = "SEND_PLAYER_PERMANENTS_CARD";
        public const string SEND_PLAYER_GRAVEYARD_RESET = "SEND_PLAYER_GRAVEYARD_RESET";
        public const string SEND_PLAYER_GRAVEYARD_CARD  = "SEND_PLAYER_GRAVEYARD_CARD";
        public const string SEND_ENEMY_HEALTH           = "SEND_ENEMY_HEALTH";
        public const string SEND_ENEMY_PERMANENTS_RESET = "SEND_ENEMY_PERMANENTS_RESET";
        public const string SEND_ENEMY_PERMANENTS_CARD  = "SEND_ENEMY_PERMANENTS_CARD";

        public const string EVENT_PHASE_COMBAT_START    = "EVENT_PHASE_COMBAT_START";
        public const string EVENT_PHASE_COMBAT_END      = "EVENT_PHASE_COMBAT_END";

        public const string EVENT_WIN                   = "EVENT_WIN";
        public const string EVENT_LOSE                  = "EVENT_LOSE";

        //blocking packets
        public const string EVENT_PHASE_DEFENSE_START   = "EVENT_PHASE_DEFENSE_START";
        public const string EVENT_PHASE_DEFENSE_END     = "EVENT_PHASE_DEFENSE_END";
        public const string SEND_CARD_ENEMY_ATTACKER    = "SEND_CARD_ENEMY_ATTACKER";
        
        //card selection packets
        public const string SEND_GUI_CARDSELECTION_RESET= "SEND_GUI_CARDSELECTION_RESET";
        public const string SEND_GUI_CARDSELECTION_CARD = "SEND_GUI_CARDSELECTION_CARD";

        //activated ability packets
        public const string SEND_ACTIVATEDABILITY_COUNT = "SEND_ACTIVATEDABILITY_COUNT";
    }

    public class ClientPackets
    {
        public const string REQUEST_DISCONNECT = "REQUEST_DISCONNECT";
        public const string SEND_MESSAGE = "SEND_MESSAGE";                      //unused
    }
}
